package com.ruibang.glass.material.service;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruibang.glass.common.domain.UserInfo;
import com.ruibang.glass.material.domain.req.ApproveProcessReq;
import com.ruibang.glass.material.domain.req.ycl.ManageOutBoundReq;
import com.ruibang.glass.material.domain.req.ycl.ManageOutInReq;
import com.ruibang.glass.material.dto.OutAndInManagementDTO;
import com.ruibang.glass.material.entity.MaterialALLOutboundManagement;
import com.teaming.cloud.framework2.common.model.ResultBody;

import java.util.List;

/**
 * <p>
 * 出库管理表 服务类
 * </p>
 *
 * @author mameng
 * @since 2024-04-01
 */

public interface GMaterialAllOutboundManagementService extends IService<MaterialALLOutboundManagement> {
    /**
     * 列表
     *
     * @param materialInventoryReq
     * @return
     */
    IPage<MaterialALLOutboundManagement> getPage(ManageOutBoundReq materialInventoryReq);

//    /**
//     *
//     * @param manageOutInReq
//     * @return
//     */
//    IPage<OutAndInManagementDTO> getPage(ManageOutInReq manageOutInReq);

    /**
     * 详情
     *
     * @param materialZPKOutboundManagement
     * @return
     */
    ResultBody addMaterialZPKOutboundManagement(MaterialALLOutboundManagement materialZPKOutboundManagement);

    String approveProcess(ApproveProcessReq processReq);

    ResultBody addByPurchaseReturn(MaterialALLOutboundManagement materialZPKOutboundManagement);

    ResultBody addMaterialYClOutboundManagement(MaterialALLOutboundManagement materialALLOutboundManagementList);

    ResultBody addByPurchaseYclList(MaterialALLOutboundManagement materialALLOutboundManagementList);


    void processNotice(String businessId);

    void processYCLNotice(String businessId);


    /**
     *
     */
    MaterialALLOutboundManagement getMaterialALLOutboundManagementById(String id);

    /**
     * 跟新
     *
     * @return
     */
    void updateMaterialZPKOutboundManagement(MaterialALLOutboundManagement materialZPKOutboundManagement);

    /**
     * 计算库存 跟新状态
     *
     * @return
     */
    void updateItemHouse(MaterialALLOutboundManagement materialZPKOutboundManagement);

    void deleteChooseIds(List<String> ids);

    /**
     * 字典表
     *
     * @return
     */
    ResultBody getDictList();

    /**
     * 用户数据查询
     *
     * @return
     */
    List<UserInfo> getUserInfoList();

    String getOutNumber();


}
